Computer networks generally include a plurality of interconnected computer systems. Some computer networks utilize a local computer for communicating data to one or more remote computers that are connected to the local computer through the network. From the remote computer, users may control or view activity on a local computer over the network utilizing a hardware interface device connected to the local computer. For instance, utilizing the interface device, a user may view screens of video data on the remote computer that were generated by the local computer. Each screen of video data may comprise thousands or millions of pixels, with each pixel representing a single point in a graphic image. Each point or pixel in a graphic image is represented by a predetermined number of bits based on the number of colors that are displayed on a graphics display. For example, 256 colors may be represented utilizing eight bits per pixel while a “true color” image may be generated utilizing 24 bits per pixel.
Since a single screen comprising a graphics image may comprise millions of bits of video data, the video data must be compressed before being communicated between computers in a network. Video compression enables the communication of video data in fewer bits (and in less time) than if the video data was communicated in its raw form. Typically, video data compression involves compressing the pixel values that make up the frames of video data utilizing a compression algorithm. Many current compression algorithms utilize an exclusive disjunction or “XOR” filtering process to compare the pixel values at various locations in two frames (or screens) of video data. In the XOR process, pixel values at the same locations in successive frames of video data are compared. The result of each comparison is then encoded for communication over the network.
However, current video data compression algorithms based on the XOR process, suffer from a number of drawbacks. One drawback is that as a result of the XOR filtering process, pixel values from previous screens of video data are often compressed along with pixel values from current screens of video data. That is, using the XOR process, unchanged pixel values from previous screens of video data are carried over with changed pixel values from newer screens of video data for compression. As a result, when the video data is compressed, the unchanged pixel values are compressed along with the changed pixel values resulting in less than ideal compression.
It is with respect to these considerations and others that the present invention has been made.